/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package DAO;

import Entidades.EntCliente;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author 824202
 */
public class DAOCliente {
    
      public int registrarCliente(Connection c, EntCliente cliente) {
        
          String sql = ClienteSqlHelper.registrarCLiente();
        int resultado = 0;
        try {
            PreparedStatement st = c.prepareStatement(sql);
          
            st.setString(1,cliente.getCodigo());
            st.setString(2,cliente.getTipocliente());
            st.setString(3,cliente.getTipoDocumento());
            st.setString(4,cliente.getNumero());
            st.setString(5,cliente.getNombres());
            st.setString(6,cliente.getApellidos());
            st.setString(7,cliente.getSexo());
            st.setString(8,cliente.getFechaNaci());
            st.setString(9,cliente.getTipoPlan());
            st.setString(10,cliente.getDepartamento());
            st.setString(11,cliente.getCiudad());
            st.setString(12,cliente.getBarrio());
            st.setString(13,cliente.getDireccion());
            st.setString(14,cliente.getTelefono());
            st.setString(15,cliente.getEdad());
            st.setString(16,cliente.getNombreResponsable());
            st.setString(17,cliente.getDocumentoResponsable());
            st.setString(18,cliente.getCelular());
            st.setString(19,cliente.getProfesion());
            st.setString(20,cliente.getEmail());
            
            resultado = st.executeUpdate();   
             } catch (SQLException ex) {
            Logger.getLogger(DAOCliente.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            try {
                c.close();
            } catch (SQLException ex) {
                Logger.getLogger(DAOCliente.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
        return resultado;
    }

      public EntCliente buscarCliente(Connection c, String cliente) {
        EntCliente busca = new EntCliente();

        try {
            PreparedStatement cl = c.prepareStatement(ClienteSqlHelper.buscarCliente(cliente));
            ResultSet rs = cl.executeQuery();

            if (rs.next()) {
                
                busca.setCodigo(rs.getString(1));
                busca.setTipocliente(rs.getString(2));
                busca.setTipoDocumento(rs.getString(3));
                busca.setNumero(rs.getString(4));
                busca.setNombres(rs.getString(5));
                busca.setApellidos(rs.getString(6));
                busca.setSexo(rs.getString(7));
                busca.setFechaNaci(rs.getString(8));
                busca.setTipoPlan(rs.getString(9));
                busca.setDepartamento(rs.getString(10));
                busca.setCiudad(rs.getString(11));
                busca.setBarrio(rs.getString(12));
                busca.setDireccion(rs.getString(13));
                busca.setTelefono(rs.getString(14));
                busca.setEdad(rs.getString(15));
                busca.setNombreResponsable(rs.getString(16));
                busca.setDocumentoResponsable(rs.getString(17));
                busca.setCelular(rs.getString(18));
                busca.setProfesion(rs.getString(19));
                busca.setEmail(rs.getString(20));
               
            } else {
               
                busca = null;
            }
        } catch (Exception e) {
            e.printStackTrace();
             
            return busca;

        } finally {
            try {
                c.close();
            } catch (Exception ex) {
            }

        }

        return busca;
    }
      
       public int Modificar(Connection c, EntCliente cliente) {
        String sql = ClienteSqlHelper.Modificar();
        int resultado = 0;
        try {
            PreparedStatement st = c.prepareStatement(sql);           
           
            st.setString(1, cliente.getTipocliente());
            st.setString(2, cliente.getTipoDocumento());
            st.setString(3, cliente.getNumero());
            st.setString(4, cliente.getNombres());
            st.setString(5, cliente.getApellidos());
            st.setString(6, cliente.getSexo());
            st.setString(7, cliente.getFechaNaci());
            st.setString(8, cliente.getTipoPlan());
            st.setString(9, cliente.getDepartamento());
            st.setString(10, cliente.getCiudad());
            st.setString(11, cliente.getBarrio());
            st.setString(12, cliente.getDireccion());
            st.setString(13, cliente.getTelefono());
            st.setString(14, cliente.getEdad());
            st.setString(15, cliente.getNombreResponsable());
            st.setString(16, cliente.getDocumentoResponsable());
            st.setString(17, cliente.getCelular());
            st.setString(18, cliente.getProfesion());
            st.setString(19, cliente.getEmail());
            st.setString(20, cliente.getCodigo());
            resultado = st.executeUpdate();

        } catch (SQLException ex) {
            Logger.getLogger(UsuarioDAO.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            try {
                c.close();
            } catch (SQLException ex) {
                Logger.getLogger(UsuarioDAO.class.getName()).log(Level.SEVERE, null, ex);
            }
        }

        return resultado;
    }
    
        public int Eliminar(Connection c, EntCliente cliente) {
        String sql =ClienteSqlHelper.Eliminar();
        int resultado = 0;
        try {
            PreparedStatement st = c.prepareStatement(sql);
            st.setString(1, cliente.getCodigo());
             st.execute();

        } catch (SQLException ex) {
            Logger.getLogger(UsuarioDAO.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            try {
                c.close();
            } catch (SQLException ex) {
                Logger.getLogger(UsuarioDAO.class.getName()).log(Level.SEVERE, null, ex);
            }
        }

        return resultado;
    }
    
         public List<EntCliente> listarClientes(Connection c) {
        String sql = UsuarioSqlHelper.listar();
        List<EntCliente> Clientes = new ArrayList<EntCliente>();
        try {
            PreparedStatement st = c.prepareStatement(sql);
            ResultSet rs = st.executeQuery();

            while (rs.next()) {
                EntCliente cliente = new EntCliente();
                cliente.setCodigo(rs.getString(("Codigo")));
                cliente.setTipocliente(rs.getString("Tipo de cliente"));
                cliente.setTipoDocumento(rs.getString("Tipo de documento"));
                cliente.setNumero(rs.getString("Número"));
                cliente.setNombres(rs.getString("Nombres"));
                cliente.setApellidos(rs.getString("Apellidos"));
                cliente.setSexo(rs.getString("Sexo"));
                cliente.setFechaNaci(rs.getString("Fecha de nacimiento"));
                cliente.setTipoPlan(rs.getString("Tipo de plan"));
                cliente.setDepartamento(rs.getString("Departamento"));
                cliente.setCiudad(rs.getString("Ciudad"));
                cliente.setBarrio(rs.getString("Barrio"));
                cliente.setDireccion(rs.getString("Dirección"));
                cliente.setEdad(rs.getString("Edad"));
                cliente.setNombreResponsable(rs.getString("Nombre del responsable"));
                cliente.setDocumentoResponsable(rs.getString("Documento del responsable"));
                cliente.setCelular(rs.getString("Celular"));
                cliente.setProfesion(rs.getString("Profesión"));
                cliente.setEmail(rs.getString("Email"));
                
            
                Clientes.add(cliente);
            }
        } catch (SQLException ex) {
            Logger.getLogger(UsuarioDAO.class.getName()).log(Level.SEVERE, null, ex);
        }
        return Clientes;
            }

}
